﻿/***************************************************************
 * Name:      task.h
 * Purpose:   单个下载任务类定义
 * Author:    杨卓荦 (yzl@bang5.net)
 * Created:   2010-08-29
 * Copyright: 杨卓荦 (http://www.bang5.net)
 * License:
 **************************************************************/

#ifndef CLOUDOWN_TASK_H_
#define CLOUDOWN_TASK_H_
#include "http_info.h"
#include "http_worker.h"
#include <list>
#include <string>
class Task {
public:
  // 构造函数
  Task(const wxString& full_url,
       const std::string& local_file_name,
       const int threads);
  // 析构函数
  virtual ~Task();
  // 获得下载文件的文件名
  void GetFileName(std::string& file_name) const;
  // 获得工作线程的数量
  size_t GetWorkerCount() const;
  // 获得下载文件的大小
  long long int GetFileSize() const;
  // 获得已经下载的大小
  long long int GetTotalByte();
  // 获得文件路径
  void GetFilePathAndName(std::string& file_path) const;
  // 获得完整的URL
  void GetFullURL(std::string& full_url) const;
  // 获得引用页
  void GetReferer(std::string& referer) const;
protected:
private:
  HttpInfo http_info_;
  std::list<HttpWorker*> http_workers_;
  std::string local_file_name_;
};

#endif // CLOUDOWN_TASK_H_
